package com.yzh.openai.infrastructure.repository;

import com.yzh.openai.domain.openai.model.entity.UserAccountEntity;
import com.yzh.openai.domain.openai.model.valobj.UserAccountStatusVO;
import com.yzh.openai.domain.openai.repository.IOpenAiRepository;
import com.yzh.openai.infrastructure.dao.UserAccountMapper;
import com.yzh.openai.infrastructure.po.UserAccountPO;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

/**
 * OpenAI仓储服务
 */
@Repository
public class OpenAiRepository implements IOpenAiRepository {
    @Resource
    private UserAccountMapper userAccountMapper;
    @Override
    public UserAccountEntity queryUserAccount(String openid) {
        UserAccountPO userAccountPO = userAccountMapper.queryUserAccount(openid);
        if (userAccountPO == null) return null;
        UserAccountEntity userAccountEntity = new UserAccountEntity();
        userAccountEntity.setOpenid(userAccountPO.getOpenid());
        userAccountEntity.setTotalQuota(userAccountPO.getTotalQuota());
        userAccountEntity.setSurplusQuota(userAccountPO.getSurplusQuota());
        userAccountEntity.genModelTypes(userAccountPO.getModelTypes());
        userAccountEntity.setStatus(UserAccountStatusVO.get(userAccountPO.getStatus()));
        
        return userAccountEntity;
    }

    @Override
    public int subAccountQuota(String openai, int cost) {
        return userAccountMapper.subAccountQuota(openai, cost);
    }

}
